/**
 * Classe de configuration d'une partie
 * @author Lo�c Mounier, Thomas Picard, Marianne Grandemenge
 */

package Modele;

import java.util.ArrayList;

public class Configuration {

	private int nbJoueurs;
	private int nbCentresRavitallementVictoire;
	private int dureePartieTps;
	private int dureePartieNbAnnees;
	private int dureeNegociations;
	private int dureeOrdres;
	private int dureeDispersions;

	public final static int MIN_NBJOUEURS = 2;
	public final static int DEFAUT_NBJOUEURS = 7;
	public final static int MAX_NBJOUEURS = 7;

	public final static int MIN_CENTRES_RAVITALLEMENT_VICTOIRE = 10;
	public final static int DEFAUT_CENTRES_RAVITALLEMENT_VICTOIRE = 18;
	public final static int MAX_CENTRES_RAVITALLEMENT_VICTOIRE = 34;

	public final static int MIN_DUREE_PARTIE_TPS = 60;
	public final static int DEFAUT_DUREE_PARTIE_TPS = 360;
	public final static int MAX_DUREE_PARTIE_TPS = 600;

	public final static int MIN_DUREE_PARTIE_NBANNEES = 1;
	public final static int DEFAUT_DUREE_PARTIE_NBANNEES = 7;
	public final static int MAX_DUREE_PARTIE_NBANNEES = 1;

	public final static int MIN_DUREE_NEGOCIATIONS = 1;
	public final static int DEFAUT_DUREE_NEGOCIATIONS = 15;
	public final static int MAX_DUREE_NEGOCIATIONS = 30;

	public final static int MIN_DUREE_ORDRES = 1;
	public final static int DEFAUT_DUREE_ORDRES = 3;
	public final static int MAX_DUREE_ORDRES = 10;

	public final static int MIN_DUREE_DISPERSIONS = 1;
	public final static int DEFAUT_DUREE_DISPERSIONS = 1;
	public final static int MAX_DUREE_DISPERSIONS = 5;

	public final static int PORT_CONNEXION = 5000;
	public final static String ADRESSE_CONNEXION = "224.0.0.42";

	/**
	 * Configuration par defaut.
	 */
	public Configuration() {
		this.nbJoueurs = DEFAUT_NBJOUEURS;
		this.nbCentresRavitallementVictoire = DEFAUT_CENTRES_RAVITALLEMENT_VICTOIRE;
		this.dureePartieTps = DEFAUT_DUREE_PARTIE_TPS;
		this.dureePartieNbAnnees = DEFAUT_DUREE_PARTIE_NBANNEES;
		this.dureeNegociations = DEFAUT_DUREE_NEGOCIATIONS;
		this.dureeOrdres = DEFAUT_DUREE_ORDRES;
		this.dureeDispersions = DEFAUT_DUREE_DISPERSIONS;
	}

	/**
	 * Configuration personnalisée.
	 * 
	 * @param nbJoueurs
	 *            Nombre de joueurs dans la partie
	 * @param nbCentresRavitallementVictoire
	 *            Nombre de centres de ravitallement qu'il faut contrôler pour
	 *            gagner la partie
	 * @param dureePartieTps
	 *            Durée de la partie en temps (minutes)
	 * @param dureePartieNbAnnees
	 *            Durée de la partie en nombre d'années
	 * @param dureeNegociations
	 *            Durée de la phase de négociations (minutes)
	 * @param dureeOrdres
	 *            Durée de la phase de rédaction des ordres (minutess)
	 * @param dureeDispersions
	 *            Durée de la phase de dispersions (minutess)
	 */
	public Configuration(int nbJoueurs, int nbCentresRavitallementVictoire, int dureePartieTps,
			int dureePartieNbAnnees, int dureeNegociations, int dureeOrdres, int dureeDispersions) {
		this.nbJoueurs = nbJoueurs;
		this.nbCentresRavitallementVictoire = nbCentresRavitallementVictoire;
		this.dureePartieTps = dureePartieTps;
		this.dureePartieNbAnnees = dureePartieNbAnnees;
		this.dureeNegociations = dureeNegociations;
		this.dureeOrdres = dureeOrdres;
		this.dureeDispersions = dureeDispersions;
	}

	public int getNbJoueurs() {
		return nbJoueurs;
	}

	public void setNbJoueurs(int nbJoueurs) {
		this.nbJoueurs = nbJoueurs;
	}

	public int getNbCentresRavitallementVictoire() {
		return nbCentresRavitallementVictoire;
	}

	public void setNbCentresRavitallementVictoire(int nbCentresRavitallementVictoire) {
		this.nbCentresRavitallementVictoire = nbCentresRavitallementVictoire;
	}

	public int getDureePartieTps() {
		return dureePartieTps;
	}

	public void setDureePartieTps(int dureePartieTps) {
		this.dureePartieTps = dureePartieTps;
	}

	public int getDureePartieNbAnnees() {
		return dureePartieNbAnnees;
	}

	public void setDureePartieNbAnnees(int dureePartieNbAnnees) {
		this.dureePartieNbAnnees = dureePartieNbAnnees;
	}

	public int getDureeNegociations() {
		return dureeNegociations;
	}

	public void setDureeNegociations(int dureeNegociations) {
		this.dureeNegociations = dureeNegociations;
	}

	public int getDureeOrdres() {
		return dureeOrdres;
	}

	public void setDureeOrdres(int dureeOrdres) {
		this.dureeOrdres = dureeOrdres;
	}

	public int getDureeDispersions() {
		return dureeDispersions;
	}

	public void setDureeDispersions(int dureeDispersions) {
		this.dureeDispersions = dureeDispersions;
	}

	public static ArrayList<ArrayList<Puissance>> getListePuissance() {
		ArrayList<ArrayList<Puissance>> l = new ArrayList<ArrayList<Puissance>>();
		return l;
	}

}
